package com.wrial.kind.math;
/*
 * @Author  Wrial
 * @Date Created in 16:49 2020/8/25
 * @Description 设计一个算法，算出 n 阶乘有多少个尾随零。
        输入: 3
        输出: 0
        解释: 3! = 6, 尾数中没有零。
 */

public class TrailingZeroes {
    /**
     * 0的产生只可能是2的倍数和5的倍数相结合,因为2的个数一定会比5多，因此只统计5的个数
     * 1.循环方式（会超时）
     * 2.除法方式
     */
//    public int trailingZeroes(int n) {
//        if (n < 5) return 0;
//        int ans = 0;
//        for (int i = 5; i <= n; i++) {
//            if (i%5==0) ans++;
//        }
//        return ans;
//    }

    /**
     * 例如25阶乘末尾就有6个0
     * 25/5=5  5/5=1  5+1=6
     */
    public int trailingZeroes(int n) {
        if (n < 5) return 0;
        int ans = 0;
        while (n >= 5) {
            ans += n = n / 5;
        }
        return ans;
    }
}
